package com.yang.service;


/**
 * <p>
 * 本地消息表接口
 * </p>
 * @author yang
 * @date 2023/8/16
 */
public interface MessageService {

    /**
     * 添加预发送消息
     * @param consumerQueue 消费队列
     * @param messageBody   消息内容
     * @return 返回消息ID
     */
    Long addWaitSendMessage(String consumerQueue, String messageBody);

    /**
     * 确认并发送消息
     * @param messageId 消息id
     */
    void confirmAndSendMessage(Long messageId);

    /**
     * 消息确认功能，处理所有长时间未确认的消息，和上游业务系统确认是否发送该消息
     */
    void checkWaitingMessage();

    /**
     * 消息恢复功能，对于长时间未消费的消息，重新发送消息给下层业务系统
     */
    void checkUnConsumeMessage();

    /**
     * 标记消息死亡，对于到达重发次数上限的消息设置为死亡
     */
    void updateMessageDead();

    boolean delete(Long messageId);
}
